const JWT = require("./JWT")
const DateFormat = require("../util/dateFormat")

let _halfExp

/**
 * 获取token有效期
 * @param {*} tokenStr 
 */
exports.socketTokenCheck = (tokenStr) => {
    let playload = JWT.verify(tokenStr) //token校验 
    _halfExp = DateFormat.dateFormat(playload.exp * 1000 - 30000) //token有效时间提前30秒
    // console.log(halfExp)
}

//判断token是否过期
const _reNewTokenToClint = () => {
    let sysTime = DateFormat.dateFormat(new Date().getTime())
    // console.log(sysTime)
    // console.log(_halfExp)
    if (_halfExp) {
        if (sysTime >= _halfExp) {
            console.log(DateFormat.dateFormat(new Date()) + " 发送续期至客户端")
            return true
        } else {
            return false
        }
    } else {
        return false
    }

}

/**
 * 刷新token任务
 * @param {*} fun 刷新token的回调函数（socker.io的推送客户端的续期函数）
 */
exports.renewInterval = (fun)=>{
    let ci = false //关闭定时任务变量
    const sit = setInterval(() => {
        // console.log("执行定时任务" + new Date().getTime())
        let irt = _reNewTokenToClint()
        // console.log("irt:" + irt)
        if (irt) {
            ci = true
            fun()
            clearInterval(sit)
        }
    }, 600000)
}
